Bar code symbologies are widely used for data collection. The first bar code symbologies developed, such as U.P.C., EAN, Code 39 and Code 93 can be referred to as "linear" symbologies because data in a given symbol is decoded along one direction or axis. Linear symbologies generally encode data characters as parallel arrangements of multiple width rectangular bars and spaces. Each unique pattern of bars and spaces within a predetermined width defines a particular data character. A given linear symbol encodes several data characters along its length as several groups of unique bar and space patterns.
Such linear symbologies are typically decoded using laser scanners or wand-based readers. In general, bar code readers scan a symbol and sample the scan line or lines to get a one-dimensional signal waveform and/or a sequence of distances between the bars and spaces in the symbol, and then analyze the waveform or distances to deduce the data encoded in the symbol. Various methods of decoding linear symbologies exist, such as edge-to-edge (element pairs) decoding of individual elements in a symbol, bar-to-bar or space-to-space comparisons, Factor R, and other known decoding methods.
As data collection markets grew, greater amounts of data were required to be encoded within a smaller area (i.e., greater "information density"). To increase the information density in bar code symbologies, "multi-row" or "stacked" symbologies were developed such as Code 49 and PDF417. Stacked symbologies generally employ several adjacent rows, each row having several characters defined by groups of multiple width bars and spaces.
Difficulties arose in attempting to read and decode these stacked symbologies. For example, a typical laser scanner must be precisely aligned with each row in a stacked symbol for it to scan and properly decode the groups of bars and spaces in each row. If the laser scanner is skewed so that its beam scans across several rows, the resulting scan data cannot be accurately decoded. One known method, described in U.S. Pat. No. 5,243,655 (the '655 patent) allows a laser scanner to decode stacked bar code symbols, particularly PDF417 symbols. The scanner under the '655 patent, however, requires significant processing time. Additionally, the method of decoding a stacked bar code under the '655 patent is limited to use with a laser scanner.
As the result of such limitations of laser scanners, and to accommodate the increasing information-density in developing symbologies, area or two-dimensional readers were created, to read area symbologies such as Code One, MaxiCode and Data Matrix. "Area symbologies," as well as most stacked symbologies, are formed by a finder pattern and a set of encoded data enclosed or near the finder pattern.
Numerous known methods of locating and decoding stacked and area symbologies exist. Each method typically provides an optimal method of decoding a particular symbology, or symbologies in a particular environment. Thus, if a reader is to locate and decode several symbologies, the reader must include multiple locating and decoding methods. Since any stored image could have the image of a symbol from any of the symbologies, the reader must perform each method to ensure that all symbols in the stored image are located and decoded. However, typically due to limitations in processing power and the time required to implement such methods, only one of such methods is typically included in a given reader.
Furthermore, many locating and decoding methods can tolerate only limited symbol degradation. If a reader is to handle various types of damage to which a symbol may suffer, such as printing errors, optical distortions, etc., the reader must include even more methods for handling such situations. This requirement further adds to the complexity of the reader and slows the processing time to locate and decode symbol images within a stored image.